package com.gzhryc.weixin.api.event;

import java.util.Map;

import com.gzhryc.weixin.api.event.msg.EventObject;
import com.gzhryc.weixin.api.event.msg.IEventRespMessage;
import com.gzhryc.weixin.api.event.msg.req.LocationEventEntity;
import com.gzhryc.weixin.api.event.msg.req.SubscribeEventEntity;
import com.gzhryc.weixin.api.event.msg.req.TemplateSendJobFinishEvent;

/**
 * 微信常规事件处理服务
 * @author 张浩
 * @version 0.2.0
 */
public interface IEventService {

	/**
	 * 关注事件，包括二维码扫描关注
	 * @param entity
	 * @return
	 */
	public IEventRespMessage subscribe(SubscribeEventEntity entity,Map<String,Object> data);
	
	/**
	 * 取消关注事件
	 * @param entity
	 * @return
	 */
	public IEventRespMessage unsubscribe(EventObject entity,Map<String,Object> data);
	
	/**
	 * 二维码扫描事件
	 * @param entity
	 * @return
	 */
	public IEventRespMessage scan(SubscribeEventEntity entity,Map<String,Object> data);
	
	/**
	 * 上报地理位置事件
	 * @param entity
	 * @return
	 */
	public IEventRespMessage location(LocationEventEntity entity,Map<String,Object> data);

	/**
	 * 模板消息发送任务完成状态事件
	 * @return
	 */
	public IEventRespMessage templateSendJobFinish(TemplateSendJobFinishEvent event,Map<String,Object> data);
}
